package com.jiesai.amaq.canines.framework.security.service;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component;

import com.jiesai.amaq.manager.model.SysResource;
import com.jiesai.amaq.manager.model.SysUser;
import com.jiesai.amaq.manager.service.SysResourceService;

/**
 * 用户权限处理
 * 
 * @author dengwm
 */
@Component
public class SysPermissionService
{
   
    
    @DubboReference
    private SysResourceService sysResourceService;
    
    

    /**
     * 获取角色数据权限
     * 
     * @param user 用户信息
     * @return 角色权限信息
     */
//    public Set<String> getRolePermission(SysUser user)
//    {
//        Set<String> roles = new HashSet<String>();
//        // 管理员拥有所有权限
//        if (user.getAccount().equals("jiesai"))
//        {
//            roles.add("admin");
//        }
//        else
//        {
//            roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
//        }
//        return roles;
//    }

    /**
     * 获取菜单数据权限
     * 
     * @param user 用户信息
     * @return 菜单权限信息
     */
    public Set<String> getMenuPermission(SysUser user)
    {
        Set<String> perms = new HashSet<String>();
        // 管理员拥有所有权限
//        if (SecurityUtils.getMaxPositionType()== EnumPositionType.MANAGER.getKey())
        if(user.getAccount().equals("jiesai"))
        {
            perms.add("*:*:*");
        }
        else
        {
//            perms.addAll(menuService.selectMenuPermsByUserId(user.getId()));
            
            List<SysResource> list = sysResourceService.findAllByUserId(user.getId());
            for(SysResource resource : list){
				String permission = resource.getPermissionStr();
				if(null != permission && ! "".equals(permission.trim())){
					perms.add(permission);
				}
			}
            
            
        }
        return perms;
    }
}
